﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace EntitiesLayer
{   
    
    public class Cliente: Usuario
    {
        public Lazy<IList<Pago>> listaPagos;
        public IList<Pago> ListaPagos
        {
            get { return listaPagos.NullSaveValue(); }
        }

        private Lazy<IList<RegistroMedida>> listaMedidas;
        public IList<RegistroMedida> ListaMedidas {

            get { return listaMedidas.NullSaveValue() ; }
        }

        private Lazy<PruebaResistencia> pruebaResistencia;
        public PruebaResistencia PruebaResistencia {

            get { return pruebaResistencia.NullSaveValue(); }
        }

        private Lazy<IList<PlanEntrenamiento>> listaPlanes;

        public IList<PlanEntrenamiento> ListaPlanes {

            get { return listaPlanes.NullSaveValue(); }
        }


        public Cliente(
            string identificacion, string nombre, string PApellido,
            string SApellido, DateTime fechaNacimiento, DateTime fechaIngreso,
            Genero genero,Bitmap foto, string alias, string nombreUsuario,
            string discripcionTipoId, string nacionalidad, Rol rol,
            
            EstadoUsuario estado = EstadoUsuario.activo,
            Lazy<IList<CorreoElectronico>> listaCorreos = null,
            Lazy<IList<Telefono>> listaTelefonos = null,
            Lazy<IList<Referencia>> listaReferencias = null,
            Lazy<IList<Pago>> listaPagos = null,
            Lazy<IList<Cita>> listaCitasPorAtender=null,
            Lazy<IList<RegistroMedida>>listaMedidas=null,
            Lazy<IList<Notificacion>> listaNotificacion = null,
            Lazy<IList<PlanEntrenamiento>> listaPlanes=null,
            bool ClaveEsAuto=true, int idUsuario=0) : 
            
            base( identificacion, nombre, PApellido,
            SApellido, fechaNacimiento, fechaIngreso, 
            genero, foto, alias, nombreUsuario,
            discripcionTipoId, nacionalidad, rol, estado,
            listaCorreos, listaTelefonos,
            listaReferencias, listaCitasPorAtender, 
            listaNotificacion ,
            ClaveEsAuto, idUsuario)
        {
            this.listaPlanes = listaPlanes;
            this.listaPagos = listaPagos;
            this.listaMedidas = listaMedidas;
            Tipo = TipoUsuario.cliente;
        }

        




       
    }
}
